namespace CSharpPro._1027;

using System;

public class Demo
{
    private int id; //字段 feild
    private string name;

    private int age;

    //属性 property
    public int Id
    {
        get => id;
        set => id = value;
        // get
        // {
        //     return id;
        // }
        // set(value)
        // {
        // this.id = value;
        // }
    }

    public string Name
    {
        get => name;
        set => name = value ?? throw new ArgumentNullException(nameof(value));
    }

    public int Age
    {
        get => age;
        set => age = value;
    }
    public void TestPrint()
    {
        Parent parent = new Parent();
        parent.Print();
        Child child = new Child();
        child.Print();//子类重写此方法时，调用自己的方法
        child.Play();
        Console.WriteLine("-----------------");
        Parent p1 = new Child();
        p1.Print();
        // int resule =Add(10,20);//实参
        // Console.WriteLine(resule);
        // int i =Convert.ToInt32("123");
        
    }
//overload 重载
    public int Add(int a, int b)//形参
    {
        return a + b;
    }

    public string Add(string a, string b)
    {
        return a + b;
    }
}



public abstract class UserTest
    {
        public abstract void M1();
        public abstract void M2();
        public abstract void M3();
    }

    public class UserTestImpl : UserTest
    {
        public override void M1()
        {
            Console.WriteLine("子类实现的M1方法");
        }

        public override void M2()
        {
            Console.WriteLine("子类实现的M2方法");
        }

        public override void M3()
        {
            Console.WriteLine("子类实现的M3方法");
        }

        // 测试方法
        public static void Main1(string[] args)
        {
            UserTest test = new UserTestImpl();
            test.M1();
            test.M2();
            test.M3();
        }
    }

// 定义用户实体类（用于演示参数和返回值）
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }

// 定义UserService接口，包含增删改查方法
    public interface IUserService
    {
        // 添加用户
        bool AddUser(User user);

        // 删除用户（根据ID）
        bool DeleteUser(int userId);

        // 修改用户
        bool UpdateUser(User user);

        // 查询用户（根据ID）
        User GetUserById(int userId);
    }

// 实现UserService接口的类
    public class UserServiceImpl : IUserService
    {
        // 实现添加用户方法
        public bool AddUser(User user)
        {
            if (user == null)
            {
                Console.WriteLine("添加失败：用户信息不能为空");
                return false;
            }

            // 实际项目中这里会操作数据库，此处仅做演示
            Console.WriteLine($"添加用户成功：ID={user.Id}, 姓名={user.Name}, 年龄={user.Age}");
            return true;
        }

        // 实现删除用户方法
        public bool DeleteUser(int userId)
        {
            if (userId <= 0)
            {
                Console.WriteLine("删除失败：用户ID无效");
                return false;
            }

            // 实际项目中这里会操作数据库，此处仅做演示
            Console.WriteLine($"删除用户成功：ID={userId}");
            return true;
        }

        // 实现修改用户方法
        public bool UpdateUser(User user)
        {
            if (user == null || user.Id <= 0)
            {
                Console.WriteLine("修改失败：用户信息或ID无效");
                return false;
            }

            // 实际项目中这里会操作数据库，此处仅做演示
            Console.WriteLine($"修改用户成功：ID={user.Id}, 新姓名={user.Name}, 新年龄={user.Age}");
            return true;
        }

        // 实现查询用户方法
        public User GetUserById(int userId)
        {
            if (userId <= 0)
            {
                Console.WriteLine("查询失败：用户ID无效");
                return null;
            }

            // 实际项目中这里会从数据库查询，此处仅做模拟返回
            Console.WriteLine($"查询用户成功：ID={userId}");
            return new User { Id = userId, Name = "张三", Age = 25 };
        }

        // 测试方法
        public static void Main1(string[] args)
        {
            IUserService userService = new UserServiceImpl();

            // 测试添加
            userService.AddUser(new User { Id = 1, Name = "李四", Age = 30 });

            // 测试查询
            User user = userService.GetUserById(1);

            // 测试修改
            if (user != null)
            {
                user.Name = "李四更新";
                user.Age = 31;
                userService.UpdateUser(user);
            }

            // 测试删除
            userService.DeleteUser(1);
        }
    }
